package com.wsc.lambda_expression;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 一个使用 Java8 Stream() 的小例子
 */
public class StreamDemo {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("abc","bc","","def","ghi","","jkl");
        // 通过 Stream 流过滤空字符串 string -> !string.isEmpty() 之后把过滤完的每个 Stream 对象变成 List
        List<String> after = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
        // 新建一个 List 容器
        List<String> list = new ArrayList<String>();
        // 重写了函数式接口 StringAdd 的方法,这个方法可以将参数 msg add 到 list 中
        StringAdd add = (msg) -> list.add(msg);
        //将过滤完空字符串的 List 遍历，并且调用重写完的方法 add
        after.forEach(add::push);
        //遍历并输出新 list 中的值
        list.forEach(System.out::println);

        Random random = new Random();
        List<Integer> lists = Arrays.asList(12,32,43,47,23,13,15,38,9);
        //得到 IntSummaryStatistics 对象
        IntSummaryStatistics statistics = lists.stream().mapToInt(x->x).summaryStatistics();
        lists.stream().limit(5).sorted().forEach(System.out::println);
    }
}
